iT邦幫忙

2024 iThome 鐵人賽

DAY 24
1

今日的行程:
辦公室:10:00 - 19:30
讀書室:21:30 - 22:30

正片開始

這個章節介紹 interrupt handling 的概念,並且以 timer interrupt 為例,詳細的描述整個 interrupt handling 的過程

中斷處理過程

  • ARM64 有兩種 interrupt,可以透過 PSTATE 來設定
    • interrupt request
    • fast interrupt request
  • 中斷處理過程和昨天紀錄的 exception handling 的過程大致上是相同的
    • 需要透過 interrupt controller 來知道是哪一個裝置發出了 interrupt
    • 書上使用的是 Raspberry Pi 4B,有兩種不同的 interrupt controller,一個是傳統的 interrupt controller,一個是 GIC-400,這個章節紀錄的是傳統中斷控制器,是一種路由形式的 interrupt controller
      • 有 SOURCEn(每一個 cpu 有一個), PENDING0, PENDING1, PENDING2 這4個暫存器
      • 先讀取 SOURCEn 暫存器,看看是哪一個 bit 被舉起來
      • 再來讀取 PENDING2 register
        • PENDING2[24] 表示 PENDING0 有中斷發生
        • PENDING2[25] 表示 PENDING1 有中斷發生
  • Cortex-A72 有4個通用的 timer
    • PS timer: EL1 physical timer (secure mode)
    • PNS timer: EL1 physical timer (non-secure mode)
    • HP timer: EL2 physical timer
    • V timer: EL1 virtual timer
    • TIMER_CNTRLx: 用來選擇以上的 timer interrupt
    • 以 PNS timer 為例,有以下的 register
    • CNTP_CTL_EL0: 決定 PNS timer 的開關,以及中斷的狀態
    • CNTP_TVAL_EL0: timer value,遞減到 0 的時候觸發 interrupt

結論


上一篇
[鐵人賽] Day 23 ARM 第 11 章節 Exception Handling
下一篇
[鐵人賽] Day 25 ARM 第 13 章節 GIC-V2
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言